home *** CD-ROM | disk | FTP | other *** search
/ Carousel / CAROUSEL.cdr / mactosh / utilprn / hpdeskje.sit / HPDJet ƒ / procedures_for_PDEF5.c < prev    next >
Text File  |  1989-04-02  |  3KB  |  96 lines

  1. /* 02.04.1989  amn  (latest edit) */
  2.  
  3. /* procedures_for_PDEF5.c  -  printer driver for Macintosh and HP DeskJet, procedures */
  4. /*                            common to PDEF0 and PDEF5. */
  5.  
  6. /* Authors:  Ari Mujunen (amn@hutcs.hut.fi) and Olli Arnberg (oar@hutcs.hut.fi). */
  7. /* Copyright Ari Mujunen, Olli Arnberg 1989. */
  8. /* You may redistribute the driver (=printer resource file, source files, */
  9. /* documentation file(s), and the file 'Copyright and Source Offer') */
  10. /* only _non-commercially_ and _in its entirety_. */
  11. /* See the file 'Copyright and Source Offer' and/or documentation for details. */
  12. /* Acknowledgements:  Special thanks to Mr. Earle R. Horton for his 'Daisy' */
  13. /* daisywheel printer driver and its source code published in 'MacTutor', Nov-Dec 1987. */
  14. /* This driver served as a basis and inspiration for our work.  It also */
  15. /* proofed that a Macintosh printer driver can be done despite the lack of */
  16. /* documentation from Apple. */
  17.  
  18. /* Change history: */
  19. /* Version  When        Who      Why */
  20. /* 2.1      02.04.1989  amn,oar  Released version. */
  21.  
  22.  
  23. /* Brings up manual sheet feed dialog; returns TRUE if user clicked 'OK'. */
  24. Boolean waitNextPage(void);
  25.  
  26. /* If user presses command-., sets the low-memory global 'PrintErr' to iPrAbort. */
  27. void checkForCommandPeriod(void);
  28.  
  29. /* Sends string to printer via low-level driver (XPrint). */
  30. void /* ??? */  printString(StringPtr);
  31.  
  32.  
  33. Boolean
  34. waitNextPage()
  35. {
  36.     DialogPtr sheetDialog;
  37.     WindowPtr savePort;
  38.     int    itemhit, donetype;
  39.     Handle doneitem;
  40.     Rect donebox;
  41.     
  42.     if ((sheetDialog = GetNewDialog(SHEETDIALOG, 0L, (WindowPtr)(-1L))) == nil)
  43.         return FALSE;
  44.     
  45.     GetPort(&savePort);
  46.     
  47.     InitCursor();  /* sorry, application... */
  48.     
  49.     GetDItem(sheetDialog, OKBUTTON, &donetype, &doneitem, &donebox);
  50.     SetPort(sheetDialog);
  51.     PenSize(3,3);
  52.     InsetRect(&donebox, -4, -4);
  53.     FrameRoundRect(&donebox, 16, 16);
  54.     
  55.     ModalDialog(0L, &itemhit);
  56.     DisposDialog(sheetDialog);
  57.     
  58.     SetPort(savePort);
  59.     if (itemhit == CANCELBUTTON)
  60.         return FALSE;
  61.         
  62.     return TRUE;
  63. }  /* waitNextPage */
  64.  
  65.  
  66. void
  67. checkForCommandPeriod()
  68. {
  69.     EventRecord myEvent;
  70.     int c;
  71.     
  72.     if (GetNextEvent(keyDownMask, &myEvent)) {
  73.         if (LoWord(myEvent.message & charCodeMask) == '.' &&
  74.             (myEvent.modifiers & cmdKey)) {
  75.             PrintErr = iPrAbort;
  76.         }
  77.     }
  78. }  /* checkForCommandPeriod */
  79.  
  80.  
  81. void
  82. printString(string)
  83. StringPtr string;
  84. {
  85.     ptXprintGlobals xPrintGlobals;
  86.     ptPrParam pXPrintParameterBlock;
  87.     
  88.     xPrintGlobals = GET_XPRINT_GLOBALS;
  89.     pXPrintParameterBlock = &xPrintGlobals->xPrintParameterBlock;
  90.     
  91.     pXPrintParameterBlock->csCode = iPrIOCtl;
  92.     pXPrintParameterBlock->lParam1 = (long)(string+1);
  93.     pXPrintParameterBlock->lParam2 = (long)(string[0]);
  94.     /* retCode = */ PBControl(pXPrintParameterBlock, FALSE);
  95. }
  96.